const BehaviorAll = require("../../behaviors/behavior_all.js");
const Tool = require("../../utils/tool.js");
const Url = require("../../utils/url.js");
const ServiceLogin = require("../../service/service_login.js");
const ServiceIndex = require("../../service/service_index.js");
const ServiceUser = require("../../service/service_user.js");
const { concat } = require("../../behaviors/behavior_all.js");
const App = getApp();

Component({
  /**
   * behaviors
   */
  behaviors: [ BehaviorAll ],
  /**
   * 页面的初始数据
   */
  data: {
    user: null, 
    isLogin: null,
    slideImgs: [],
    modules: [],
    messages: [],
    userId: null,
    ticketId: null,
    showLoginFlag:false,
    url: "http://qr.xunjiuwang.com:81/qr/video/indexVideo.mp4",
    triggerRetrieveData: false,
    /**
     * 开始页
     */
    pageModule: null,
    startPage: 0,
    /**
     * 接收参数
     */
    optionId: null,
    optionType: null
  },

  methods:{
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
      const _this = this;
      // 处理参数
      _this._dealOptions(options);
      // 处理请求
      _this._dealRequest();
      /** app 回调相关 */
      // 登录判断
      const isLogin = App.globalData.isLogin;
      if (null !== isLogin) {
        _this.setData({ isLogin })
        const user = App.globalData.user;
        if (user) {
          _this.setData({user})
        }
        if(isLogin){
          _this._isLoginHandler(user);
        }
      }
      App.checkLoginReadyCallback = (isLogin, res) => {
        const user = res.data.data.user;
        _this.setData({ user, isLogin })
        if(isLogin){
          _this._isLoginHandler(user);
        }
      }
      // 用户信息
      if (null !== App.globalData.userInfo) {
        _this.setData({ userInfo: App.globalData.userInfo })
      }
      App.userInfoReadyCallback = res => {
        _this.setData({ userInfo: res })
      };

    },
    /**
     * 授权
     */
    bindGetUserInfo: function (e) {
      const _this = this;
      Tool.showLoading();
      // 登录
      ServiceLogin.login(function (data, userInfo) {
        // 设置登录标志
        App.globalData.isLogin = true;
        _this.setData({ isLogin: true });
        _this.setData({ showLoginFlag: false })
        // 设置userinfo
        const user = data.data.user;
        App.globalData.userInfo = userInfo;
        App.globalData.user = user;
        // 设置用户数据
        _this.setData({user, isLogin: true});
        //
        Tool.hideLoading();
        // 登录后处理
        _this._isLoginHandler(user);
        // 普通用户跳转到注册
        if(!_this._generateUserJumpToRegister(user)){

        }
      })
    },
    /**
     * 普通用户跳转到登陆与注册页面
     */
    _generateUserJumpToRegister: function(user){
      if (user.type === 'General') {
        const URL = Url.newInstance('/model_recharge/pages/add/add');
        wx.reLaunch({url: URL.get()})
        return true;
      }
      return false;
    },
    /**
     * 处理参数
     */
    _dealOptions: function(options){
      const _this = this;
      //
      let optionId = null;
      let optionType = null;
      if (undefined !== options.q){ // 来自扫描二维码
        const paras = Url.newInstance(decodeURIComponent(options.q)).getParas();
        optionId = paras.id[0];
        optionType = paras.type[0];
      }else{                        // 来自分享
        optionId = options.id;
        optionType = options.type;
      }
      if(undefined !== optionId && undefined !== optionType){
        _this.setData({ optionId, optionType });
      }
    },
    /**
     * 处理请求
     */
    _dealRequest: function(){
      const _this = this;
      // 幻灯片
      ServiceIndex.slideList(data => {
        _this.setData({ slideImgs: data.records })
      });
      // 模块
      ServiceIndex.moduleList(data => {
        _this.setData({ modules: data.records })
      });
      // 分页模块
      ServiceIndex.pageModule(0, function (data) {
        _this.setData({ pageModule: data });
      })
      // 消息
      ServiceIndex.messageList(data => {
        _this.setData({ messages: data.records })
      });
    },
    /**
     *  登陆状态下执行
     */
    _isLoginHandler: function (user) {
      const _this = this;
      // 处理其它
      const type = _this.data.optionType;
      if (type) {
        const id = _this.data.optionId;
        if(type === 'companyStaff'){  // 绑定配送员关系
          ServiceUser.bind(id, function () {
            _this.setData({ optionType: null, optionId: null })
          }); 
        }else if(type === 'ticket'){  // 电子券
          _this.setData({ optionType: null, optionId: null })
          if (user.type !== 'General') {
            wx.reLaunch({ url: '/model_user/pages/card/card?id=' + id })
          }
        }
      }
    },

    /**
     * 访问处理
     */
    onAccess: function(e){
      const _this = this;
      // const login = App.globalData.isLogin;
      // const user = App.globalData.user;
      const login = _this.data.isLogin;
      const user = _this.data.user;
      if (!login){
        _this.setData({
          showLoginFlag: true
        });
      }else {
        // 普通用户跳转到注册
        if(!_this._generateUserJumpToRegister(user)){
          const url = e.currentTarget.dataset.url;
          const type = e.currentTarget.dataset.type;
          if(url){
            if ('reLaunch' === type) {
              wx.reLaunch({ url: url, });
            } else {
              wx.navigateTo({ url: url, });
            }
          }
        }
      }
    },

    onCloseLogin: function(e){
      const _this = this;
      _this.setData({
        showLoginFlag: false
      });
    },

    /**
     * 触底事件
     */
    onReachBottom: function () {
      const _this = this;
      if (null !== _this.data.pageModule) {
        let startPage = this.data.startPage + 1;
        ServiceIndex.pageModule(startPage, function (data) {
          _this.data.pageModule.items.push(...data.items);
          _this.setData({
            pageModule: _this.data.pageModule,
            startPage: startPage
          });
        });
      }
    },
    /**
    * onShow
    */
    onShow: function (e) {
      const _this = this;
      _this.setData({ triggerRetrieveData: true });
    },
    /**
    * 获取数据
    */
    car_onRetrieve: function (e) {
      const _this = this;
      _this.setData({
        car_amount: e.detail.amount
      })
    },
  }

});